/**
 * 数字单位换算函数，单位和数字分开返回
 * @param {string|number} num - 需要转换的数字或数字字符串
 * @returns {{value: string, unit: string}} - 转换后的对象，包含值和单位
 */
export function formatNumber(num) {
  // 将输入转换为数字
  const number = Number(num)

  if (isNaN(number)) {
    throw new Error('输入必须是有效的数字或数字字符串')
  }

  if (number >= 10000) {
    return {
      value: (number / 10000).toFixed(2),
      unit: '万件'
    }
  } else {
    return {
      value: number.toString(),
      unit: '件'
    }
  }
}

/**
 * 格式化数字，添加适当的单位前缀。
 *
 * @param {number} num - 需要格式化的数字。
 * @returns {string} - 格式化后的带有单位前缀的字符串。
 *
 * @example
 * numUnitFormat(1234567890); // 返回 "12.34亿"
 * numUnitFormat(9876543); // 返回 "987.65万"
 * numUnitFormat(12345); // 返回 "1.23万"
 * numUnitFormat(123); // 返回 "123"
 */
export function numUnitFormat(num) {
  const units = [
    { value: 100000000, label: '亿' },
    { value: 10000, label: '万' }
  ]

  for (let i = 0; i < units.length; i++) {
    const unit = units[i]
    if (num >= unit.value) {
      const formattedNum = new Intl.NumberFormat('zh-CN', {
        maximumFractionDigits: 1
      }).format(num / unit.value)
      return `${formattedNum}${unit.label}`
    }
  }

  return new Intl.NumberFormat('zh-CN').format(num)
}

/**
 * 格式化数字，添加千位分隔符
 * @param {string|number} input - 需要格式化的数字或数字字符串
 * @returns {string} - 格式化后的带有千位分隔符的字符串
 */
export function formatCommas(input) {
  let num
  if (typeof input === 'string') {
    num = parseFloat(input.replace(/,/g, ''))
  } else if (typeof input === 'number') {
    num = input
  } else {
    num = 0
  }
  if (Number.isInteger(num)) {
    return num.toLocaleString('en-US')
  } else {
    return num.toLocaleString('en-US', { maximumFractionDigits: 2 })
  }
}

/**
 * 处理内容
 * @returns {string} - 将占位符替换为对应内容
 * @param cont
 * @param data
 */
export function renderContent(cont = '', data = []) {
  let content = cont
  let nameList = []
  for (let i = 0; i < data.length; i++) {
    const item = data[i].data
    nameList = []
    item?.map((child) => {
      if (child.name) {
        nameList.push(
          `<span class="${
            child.color === 'primary'
              ? 'text-#229F60 text-16px'
              : 'text-blue-700'
          } font-bold  text-14px px-4px">${child?.name || ''}</span>`
        )
      }
      return child
    })
    content = content.replace(data[i].type, nameList.join('，'))
  }
  return `${content}`
}

/**
 * 设置自定义标题
 * @returns {string} - 截取对应长度，前面添加省略号
 * @param text
 * @param maxLength
 */
export function setCustomTitle(text, maxLength = 12) {
  if (text.length >= maxLength) {
    const suffix = text.slice(-maxLength)
    return `...${suffix}`
  } else {
    return text
  }
}
